/**
 * 
 */
package cn.stylefeng.guns.sys.core.util.common;

import java.text.DecimalFormat;
import java.util.Collection;
import java.util.Random;

/**
 * @author likangli
 * @2018年11月15日
 * 字符串工具类
 */
public class StringUtils {

	
	/**
	 * 判断字符串是否为空
	 */
	public static boolean isEmpty(String str) {
		
		if(null != str && str.trim().length() > 0) {
			
			return false;
		}
		
		return true;
		
	}
	
	
	/**
	 * 获取判空后的字符串，如果为空，返回   - ,  否则返回原字符串
	 * @return
	 */
	public static String getStringForLine(String str) {
		
		if(isEmpty(str))  return "-";
		
		return str;
	}
	

	/**
	 * 获取判空后的字符串，如果为空，返回  空字符串 ,  否则返回原字符串
	 * @return
	 */
	public static String getStringForBlankSpace(String str) {
		
		if(isEmpty(str))  return "";
		
		return str;
	}
	
	
	/**
	 * 把html代码进行专业，以便进行json传输
	 * 
	 * @param str
	 * @return
	 */
	public static String encodeHtml(String str) {
		// str含有HTML标签的文本
		str = str.replace("<", "&lt;");
		str = str.replace(">", "&gt;");
		str = str.replace(" ", "&nbsp;");
		str = str.replace("	", "&nbsp;");
		str = str.replace("\n", "");
		str = str.replace("\r", "");
		str = str.replace("&", "&amp;");
		str = str.replace("\"", "&**;");
		return str;
	}

	/**
	 * 转义会html
	 * 
	 * @param str
	 * @return
	 */
	public static String toHtml(String str) {
		// str含有HTML标签的文本
		str = str.replace("&amp;", "&");
		str = str.replace("&lt;", "<");
		str = str.replace("&gt;", ">");
		str = str.replace("&nbsp;", " ");
		str = str.replace("&**;", "\"");
		return str;
	}

	
	
	/**
	 * 格式化价格浮点型
	 * @param value
	 * @return
	 */
	public static String getPriceValue(Float value) {
		
		DecimalFormat df = new DecimalFormat();
		
		// 数据未空或为零
		if(null == value || value.equals(0f))
			return "0";
		
		
		// 第二位小数位不为零
		if((int)(value * 100) % 10 != 0) {
			
			String style = "0.00";
			df.applyPattern(style);
			return df.format(value);
		}
		
		// 第二位小数位不为零
		if((int)(value * 10) % 10 != 0) {
			
			String style = "0.0";
			df.applyPattern(style);
			return df.format(value);
		}
		
		String style = "0";
		df.applyPattern(style);
		return df.format(value);
	}
	
	
	/**
	 * 字符串给指定位置加 *
	 * @param str  要处理字符串
	 * @param startIndex  要处理的开始位置, 下标从0开始
	 * @param count   要处理的长度 
	 * @return
	 */
	public static String strProcess(String str, int startIndex, int count) {
		
		if(StringUtils.isEmpty(str)) {
			return "";
		}
		
		int len = str.length();
		if(len < startIndex) {
			
			return str;
		}
		
		StringBuilder sb = new StringBuilder();
		
		int endIndex = startIndex + count;
		for (int i = 0; i < len; i++) {
			
			if(i >= startIndex && i < endIndex) {
				sb.append("*");
			}else {
				
				sb.append(str.charAt(i));
			}
			
		}
		
		return sb.toString();
	}
	
	
	/**
	 * 把集合内容使用指定分隔符拼接起来
	 * @param <T>
	 * 结果示例    1234|2343|234234|342
	 */
	public static <T> String join(Collection<T> collection, char separator) {
		
		
		if(null == collection || collection.size() <= 0) {
			
			return "";
		}
		
		StringBuilder sb = new StringBuilder();
		for(T t : collection) {
			
			sb.append(t);
			sb.append(separator);
		}
		sb.deleteCharAt(sb.length() - 1);
		
		return sb.toString();
		
	}
	
	
	/**
	 * 创建订单编号
	 * 由时间戳和用户id后四位组成
	 * @param userId   用户id   没有输入0
	 * @return
	 */
	public synchronized static String createOrderNum(String userId) {
		
		
		//if(null == userId)
			userId = "";
		
		String user = String.valueOf(userId);
		Random rand = new Random();
		
		if(user.length() > 4) {
			user = user.substring(user.length() - 4);
		}
		
		
		while(user.length() < 4){
			user = rand.nextInt(10) + user;
		}
		
		
		return DateUtils.generateTimestamp() + user ;
	}
	
	/**
	 * 创建订单编号
	 * 由时间戳和用户id后四位组成
	 * @param userId   用户id   没有输入0
	 * @return
	 */
	public synchronized static String createOrderNum() {
		
		

		String user = "";
		Random rand = new Random();
		
		while(user.length() < 4){
			user = rand.nextInt(10) + user;
		}
		
		return DateUtils.generateTimestamp() + user ;
	}
	
	

	
}
